#ifndef __SDRAM_H
#define __SDRAM_H

#include "main.h"

/* 定义内存管理表类型,当外扩SDRAM的时候，必须使用uint32_t类型，否则可以定义成uint16_t，以节省内存占用 */
#define MT_TYPE uint32_t

/* 内存块大小为64字节 */
constexpr uint32_t MEM_BLOCK_SIZE = 64;

/* 最大管理内存28912K */
constexpr uint32_t MEM_MAX_SIZE = 28912 * 1024;

/* 内存表大小 */
constexpr uint32_t MEM_ALLOC_TABLE_SIZE = MEM_MAX_SIZE/MEM_BLOCK_SIZE;

// 初始化 SDRAM
void sdram_init();

/* 获得内存使用率 */
uint16_t memUsed();

/* 内存释放 */
void memFree(void *ptr);

/* 内存分配 */
void *memMalloc(uint32_t size);

/* 重新分配内存 */
void *memRealloc(void *ptr, uint32_t size);

#endif







